package cn.hinglo.permission.service;

import cn.hinglo.common.constant.MonitoringConstant;
import cn.hinglo.permission.model.*;
import cn.hinglo.common.util.SysCommonKit;
import cn.hutool.core.util.NetUtil;
import cn.hutool.core.util.StrUtil;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

import java.util.List;

/***
 * 监控模块的服务层
 * @author Administrator
 */
public class MonitoringService {
    /***
     * 设置默认查询10条数据出来
     */
    private static final Integer NUM = 10;

    /***
     * 返回CPU的信息
     * @param ip IP
     * @return 返回查询的集合
     */
    public List<Record> getInfoByTypeService(String ip, Integer type) {
        String sql = getSqlByType(type);
        return Db.find(sql);
    }

    /***
     * 因为是通用的类型，所有不用写重复性的工作
     * @param type 通过type来返回SQL，使用相同的方法进行执行
     * @return 返回SQL
     */
    private String getSqlByType(int type) {
        switch (type) {
            case MonitoringConstant.CPU:
                return SysCommonKit.getRemoveFieldSql(Cpu.class);
            case MonitoringConstant.MEM:
                return SysCommonKit.getRemoveFieldSql(Mem.class);
            case MonitoringConstant.NETWORK:
                return SysCommonKit.getRemoveFieldSql(Network.class);
            case MonitoringConstant.JDK:
                return SysCommonKit.getRemoveFieldSql(Jdk.class);
            default:
                return null;
        }
    }

    /***
     * 根据传入的IP来返回IP地址，如果地址为NUll,默认本机地址
     * @param ip 传入的IP
     * @return 返回处理后的IP
     */
    private String getIp(String ip) {
        return StrUtil.isBlank(ip) ? NetUtil.getLocalhostStr() : ip;
    }
}
